package com.chuangjiangx.member.manager.web.web.coupon.request;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.Range;

import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.Date;

/**
 * @author Tzhou on 2018/4/3.
 */
@Data
@ApiModel(value = "创建卡券参数")
public class CreateCouponRequest {
    public CreateCouponRequest() {
    }


    /**
     * 卡券名称
     */
    @NotNull

    @Length(min = 1,max = 20)
    @ApiModelProperty(value = "卡券名称")
    private String name;

    /**
     * 卡券面值
     */
    @NotNull
    @ApiModelProperty(value = "卡券面值")
    private BigDecimal amount;

    /**
     * 卡券类型 1-代金券 2-折扣券 3兑换券
     */
    @ApiModelProperty(value = "卡券类型 1-代金券 2-折扣券 3兑换券")
    @NotNull
    @Range(min = 1,max = 3)
    private Integer type;

    /**
     * 卡券来源 1-领取 2-储值
     */
    @NotNull
    @ApiModelProperty(value = "卡券来源 1-领取 2-储值")
    private Integer couponSourceType;

    /**
     * 卡券logo
     */
    @ApiModelProperty(value = "卡券logo")
    @NotNull
    private String logo;

    /**
     * 最低消费限制
     */
    @ApiModelProperty(value = "最低消费限制")
    @NotNull
    private BigDecimal miniExpendLimit;

    /**
     * 每人限制领取上限
     */
    @ApiModelProperty(value = "每人限制领取上限")
    private Integer claimUpperLimit;

    /**
     * 总库存
     */
    @NotNull
    @ApiModelProperty(value = "总库存")
    private Long totalInventory;


    /**
     * 卡券使用有效期类型 0-固定时间 1-立即生效
     */
    @NotNull
    @ApiModelProperty(value = "卡券使用有效期类型 0-固定时间 1-立即生效")
    private Integer validType;

    /**
     * 领取后X天内有效, valid_type=1时有值
     */
    @ApiModelProperty(value = "领取后X天内有效, valid_type=1时有值")
    private Integer claimedTime;
    /**
     * 卡券使用有效起始时间,valid_type=0时有值
     */
    @ApiModelProperty(value = "卡券使用有效起始时间,valid_type=0时有值")
    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
    private Date validTimeStart;
    /**
     * 卡券使用有效结束时间,valid_type=0时有值
     */
    @ApiModelProperty(value = "卡券使用有效结束时间,valid_type=0时有值")
    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
    private Date validTimeEnd;
    /**
     * 说明每个星期中周几可使用卡券 1,2,3,4,5,6,7"
     */
    @NotNull
    @ApiModelProperty(value = "说明每个星期中周几可使用卡券 1,2,3,4,5,6,7")
    private String useTimeWeek;
    /**
     * 卡券使用时段 7:00-9:00,13:00-14:00
     */
    @NotNull
    @ApiModelProperty(value = "卡券使用时段 7:00-9:00,13:00-14:00")
    private String useTimeDay;
    /**
     * 提醒类型 0-不提醒 1-3天内提醒
     */
    @NotNull
    @ApiModelProperty(value = "提醒类型 0-不提醒 1-3天内提醒")
    private Integer remindType;

    /**
     * 卡券活动起始时间
     */
    @NotNull
    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
    @ApiModelProperty(value = "卡券活动起始时间")
    private Date actTimeStart;
    /**
     * 卡券活动结束时间
     */
    @ApiModelProperty(value = "卡券活动结束时间")
    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
    private Date actTimeEnd;
    /**
     * 说明
     */
    @ApiModelProperty(value = "说明")
    private String remark;

    /**
     * 微信卡券颜色
     */
    @NotNull
    @ApiModelProperty(value = "微信卡券颜色")
    private String wxColor;
    /**
     * 同步发布至  0不发布  1微信
     */
    @NotNull
    @ApiModelProperty(value = "同步发布至  0不发布  1微信 2zhifubao ")
    private String syncType;
    /**
     * 卡券标题  在微信按钮下方显示
     */
    @ApiModelProperty(value = "卡券标题  在微信按钮下方显示")
    private String wxCenterSubTitle  ;

    /**
     * 卡券使用门店id,例如：1,2,3,4
     */
    @ApiModelProperty(value = "卡券使用门店id,例如：1,2,3,4")
    private String storeIds;
}
